/**
 *******************************************************************************
 * @file MB_def.h
 * @brief 本文件定义了ModuleBridge框架中使用到的各类定义。
 *******************************************************************************
*/
#ifndef MB_DEF_H
#define MB_DEF_H

/**
 *******************************************************************************
 * @note 
 * ModuleBridge变量、函数命名规范
 * 一、变量命名规范：
 *  1) 变量采用小驼峰命名方式，首字符为小写字母或下划线，例如：maxStackSize；
 *  2) 缩写均采用大写方式，例如：MB、HAL；
 *  3) 缩写与单词之间应使用下划线分隔，例如：abc_MB_Xyz；
 *  4) 若首个字符为缩写的一部分，则应在变量名前添加下划线，例如：_XYZ_Word；
 *  5) 若变量为指针类型，则应在变量名前面添加字母"p"加以标注，例如：pQueue；
 * 二、函数命名规范
 *  1) 函数名采用“返回值类型标注+大驼峰命名”的组合命名方式；
 *  2) 函数返回值类型标注说明，同时适用于有符号类型和无符号类型：
 *   a) void类型                        ----> v
 *   b) char类型        （1 Byte）      ----> c
 *   c) short类型       （2 Bytes）     ----> s
 *   d) int类型         （4 Bytes）     ----> i
 *   e) long和long long （8 Bytes）     ----> l
 *   f) 其他非基本类型                   ----> x
 *  3) 若函数返回的是指针类型，则需要在类型标注前添加字符"p"加以说明，例如：某函数名为
 *     pxMB_QueueCreate，则该函数返回一个非基本类型指针。
 *******************************************************************************
*/

/**
 * @brief MB状态定义
*/
typedef enum {
    MB_OK       = 0x00U,
    MB_ERROR    = 0x01U,
    MB_BUSY     = 0x02U,
    MB_UNKNOW   = 0x03U
} MB_Status;

#define MB_CHECK_POINTER(P) if (NULL == (P)) return MB_ERROR;
#define MB_TEST_COND(COND) if (!(COND)) return MB_ERROR; 

#endif